|
グローバルインタプリタロック(英: Global Interpreter Lock, GIL)とは、プログラミング言語のインタプリタのスレッドによって保持されるスレッドセーフでないコードを、他のスレッドと共有してしまうことを防ぐための排他 ロックである。インタプリタのひとつのプロセスごとに必ずひとつの GIL が存在する。 プログラミング言語においてグローバルインタプリタロックを採用した場合、複数のスレッドを持つインタプリタプロセスの並行性を制限してしまう。プロセスをマルチプロセッサのマシンで実行させた場合、ほとんどあるいはまったく速度の向上が見られない。 こうしたロックを採用する理由として、下記のものがある。 * シングルスレッドのプログラムの速度向上(すべてのデータ構造に対して別々にロックを獲得・開放する必要がなくなる) * 通例スレッドセーフではないC言語のライブラリとの結合が容易である。 インタプリタがひとつずつ GIL を持つため、GIL を持つ言語で書かれたアプリケーションは、完全な並列性を得るため別々のプロセス(すなわちインタプリタ)を持つ必要がある。 グローバルインタプリタロックを実装した言語には、下記のものがある: * Python (正確には C言語による実装であるCPython〔Python/C API Reference Manual: Thread State and the Global Interpreter Lock 〕) * Ruby (グローバルVMロックと呼ばれている). ==参考文献== 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「グローバルインタプリタロック」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Global Interpreter Lock 」があります。 スポンサード リンク
|